 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;

namespace SAD
{
    public class GestorEmergencia
    {

        //private Emergencia[] emergencia;
    
        //string cadena;

        //int cant = 0;

        static private Conexion conexionBD = new Conexion();

        static private string GenerarID()
        {
            String consulta = "SELECT SUBSTRING(MAX(idEmergencia),4,9) FROM EMERGENCIA";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            string aux = dataReader[0] + "";
            int r;
            if (aux == "") r = 1;
            else r = Convert.ToInt32(aux) + 1;

            string id = r.ToString();
            int nrodig = id.Length;

            for (int i = 1; i <= 9 - nrodig; i++)
                id = "0" + id;
            id = "EME" + id;
            dataReader.Close();
            return id;
        }
        
        private static string convertirTipo(string nombreTipo){
            String consulta = "SELECT IDTIPO FROM TIPOEMERGENCIA WHERE NOMBRE LIKE '%" + nombreTipo + "%'";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            
            string aux = dataReader[0]+ "";
            dataReader.Close();
            if (aux!= "") return aux;
            else return null;
            
        }


        static public void RegistrarEmergencia(Emergencia emergencia)
        {
            string nuevoid = GenerarID();
            string consulta = "";

            emergencia.IdEmergencia = nuevoid;

            /*
        private String idEmergencia;
        private String fecha;
        private String nombre;
        private Single prioridad;
        private String idUbicacion;
        private String idTipo;
        private String descripcion;
        private String estado;


             */

            consulta = "INSERT INTO EMERGENCIA (IDEMERGENCIA, NOMBRE, DESCRIPCION, FECHA, IDUBICACION, IDTIPO, PRIORIDAD, IDESTADO)" +
                                        "VALUES ( " + "\'" + @emergencia.IdEmergencia + "\'" + "," + "\'" + @emergencia.Nombre + "\'" + "," + "\'" + @emergencia.Descripcion + "\'" + ","
                                        + "convert(datetime," + "\'" + @emergencia.Fecha + "\'" + ", 103)," + "\'" + @emergencia.IdUbicacion + "\'" + "," + "\'" + @emergencia.IdTipo + "\'" + "," + "\'" + @emergencia.Prioridad + "\'" + ","+ "\'" + @emergencia.Estado + "\'" + ")";



            conexionBD.EjecutarComando(consulta);
            MessageBox.Show("Insert exitoso =)", "SAD aviso"); //Decidir sobre messageBox
        }

        
        static public Emergencia BuscarEmergenciaCodigo(string idEmergencia)
        {
            String consulta = "SELECT * FROM EMERGENCIA WHERE idEmergencia = " + "\'" + @idEmergencia + "\'" + ";";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            while (dataReader.Read())
            {
                Emergencia emergencia = new Emergencia();
                return emergencia;
            }

            return null;
        }

        //La asignación de prioridad saldrá de un cálculo a partir de las características de la emergencia
        /*
        public void AsignarPrioridad(int prioridad,int codigo)
        {
          string consulta=" UPDATE EMERGENCIA SET prioridad="+prioridad+" where idEmergencia="+codigo+";";
          conexionBD.EjecutarComando(consulta);
        }
         */

        //El radio de alcance, si no es obtenido de alguna fuente de información, se calculará a partir 
        //de la intensidad de la emergencia

        public void GenerarRadioAlcance()
        {
            //no existe radio alcanceeeee
        }
        public int UltimaEmergencia()
        {
            /*
            string consulta = " Select COUNT(*) from Emergencia;";
			

            using(SqlConnection con = new SqlConnection(sadconexion.CadenaConexion()));
			{
                
              

               SqlCommand cmd = new SqlCommand();

                cmd.CommandType = System.Data.CommandType.Text;
                 cmd.CommandText = consulta;
                 cmd.Connection = con;
                 con.Open();
                 try
                 {
                     SqlDataReader dataReader = cmd.ExecuteReader();


                     while (dataReader.Read()) cant++;
                 }
                 catch
                 {
                     MessageBox.Show("nO LEE");
                 
                 }


                return cant;
			    
            }
             * */
            return 0;
        }



        static public List<String> ObtenerEmergencias()
        {
            List<String> lista = new List<String>();

            //String consulta = "SELECT IDEMERGENCIA, NOMBRE, fecha FROM EMERGENCIA where estado = 'activo'";
            String consulta = "SELECT IDEMERGENCIA, NOMBRE FROM EMERGENCIA";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);

            if (dataReader.HasRows)
            {
                while (dataReader.Read())
                {
                    //lista.Add(dataReader[0].ToString() + " - " + dataReader[1].ToString() + " - " + dataReader[2].ToString());
                    lista.Add(dataReader[0].ToString() + " - " + dataReader[1].ToString());
                    //lista.Add(dataReader.GetString(0));
                }
            }

            dataReader.Close();
            return lista;
        }




        static internal List<TipoEmergencia> ObtenerTiposEmergencias()
        {
            List<TipoEmergencia> lista = new List<TipoEmergencia>();
            TipoEmergencia moneda;
            String consulta = "SELECT idTipo, nombre FROM TipoEmergencia";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);

            if (dataReader.HasRows)
            {
                while (dataReader.Read())
                {
                    moneda = new TipoEmergencia(dataReader.GetString(0), dataReader.GetString(1));
                    lista.Add(moneda);

                    //lista.Add(dataReader[0].ToString() + " - " + dataReader[1].ToString());
                    //lista.Add(dataReader.GetString(0));
                }
            }

            dataReader.Close();
            return lista;
        }




        internal static string ObtenerCodigoTipoEmergencia(string nombre)
        {
            String consulta = "SELECT IDTIPO FROM TIPOEMERGENCIA WHERE NOMBRE = " + "\'" + @nombre + "\'" + ";";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            string codigo = dataReader[0].ToString();
            dataReader.Close();
            return codigo;
        }
    }
}
/*
public void ModificarUbicacion(int nuevaubicacion,string codigo)
{
          cod=parseInt(codigo);
          String consulta = " UPDATE EMERGENCIA SET prioridad="+nuevaubicacion+ " WHERE idEmergencia="+cod+";";
          conexionBD.EjecutarComando(consulta);
}
public void ModificarPrioridad(int nuevaprioridad,string codigo)
{
          cod=parseInt(codigo);
          String consulta = " UPDATE EMERGENCIA SET prioridad="+nuevaprioridad+ " WHERE idEmergencia="+cod+";";
          conexionBD.EjecutarComando(consulta);
}
public emergencia BuscarEmergencia_id(int idbusqueda)
{
    
    String consulta = "SELECT * FROM EMERGENCIA WHERE idcamp = " + idbusqueda + ";";
    SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
    while (dataReader.Read())
    {
        Emergencia emergencia = new Emergencia(dataReader[1].ToString(),dataReader[2].ToString(),dataReader[3].ToString(),dataReader[4].ToString(),dataReader[5].ToString(),dataReader[6].ToString(),dataReader[7].ToString(),dataReader[8].ToString());
        return emergencia;
    }
}
		
*/




//SELECT STR_TO_DATE('01,5,2013','%d,%m,%Y');